import Vue from 'vue'
import App from './App.vue'
import router from './router'
import Vant, { Toast } from 'vant';
import 'vant/lib/index.css';
import axios from "axios";
// axios.defaults.baseURL = 'http://127.0.0.1:3000'
router.beforeEach((to, from, next) => {
    console.log('路由守卫');
    console.log(to);


    // 给引入的 axios 设置默认的基准路径
    // 如果是已经发布到线上, 就应该使用线上的服务器
    // 线上线下服务器不一样, 就应该有不一样的配置
    // axios.defaults.baseURL = 'http://157.122.54.189:9083'
    if (to.meta.needAuth) {
        if (localStorage.getItem('token')) {
            next();
        } else {
            router.push('/login')
        }
    } else {
        next()
    }
})

if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://127.0.0.1:3000'
} else {
    axios.defaults.baseURL = 'http://157.122.54.189:9083'
}
axios.interceptors.response.use((res) => {
        const reg = /^4\d{2}$/
        if (reg.test(res.data.statusCode)) {
            Toast.fail(res.data.message || '系统错误')
        }
        if (res.data.message === '用户信息验证失败') {
            // router.push('/login')
            localStorage.clear()
            router.replace('/login')
            return
        }
        return res
    })
    // // 请求拦截器
    // 可以拦截所有请求, 并且对其执行一个回调
axios.interceptors.request.use(config => {
        // 这里可以接受一个形参, 拿到当前请求的配置

        // 条件判断, 是否需要带上 token
        // 1. 用户已登录(有token)
        // 2. 页面内的请求代码本身没有带上 Authorization
        if (localStorage.getItem('token') && !config.headers.Authorization) {
            config.headers.Authorization = "Bearer " + localStorage.getItem('token')
        }

        // 拦截一定要放行
        return config
    })
    // 将axios绑定到vue原型中
Vue.prototype.$axios = axios;
Vue.use(Vant)
Vue.config.productionTip = false
    // const router = new VueRouter({})
new Vue({
    router,
    render: h => h(App)
}).$mount('#app')